package com.ddxz.hospital.service;

import com.ddxz.hospital.dto.*;
import com.ddxz.tool.web.dto.DdxzResponse;
import org.springframework.web.multipart.MultipartFile;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/9/23
 */

public interface InputService {
    /**
     * 保存病人信息
     *
     * @param token   令牌
     * @param patient 病人信息
     * @return 是否保存成功
     */
    DdxzResponse patientSave(String token, PatientVO patient);

    /**
     * 保存住院信息
     *
     * @param token     令牌
     * @param patientId 病人标识
     * @param consult   住院信息
     * @return 是否保存成功
     */
    DdxzResponse consultSave(String token, String patientId, ConsultVO consult);

    /**
     * 保存随访信息
     *
     * @param token     令牌
     * @param patientId 病人标识
     * @param course    随访信息
     * @return 是否保存成功
     */
    DdxzResponse courseSave(String token, String patientId, CourseVO course);

    /**
     * 获取病人详情
     *
     * @param token     令牌
     * @param patientId 病人标识
     * @return 病人详情
     */
    DdxzResponse patientDetail(String token, String patientId);

    /**
     * 获取住院信息
     *
     * @param token     令牌
     * @param consultId 住院标识
     * @return 住院信息
     */
    DdxzResponse consultDetail(String token, String consultId);

    /**
     * 获取随访信息
     *
     * @param token    令牌
     * @param courseId 随访标识
     * @return 随访信息
     */
    DdxzResponse courseDetail(String token, String courseId);

    /**
     * 分页检索病人信息
     *
     * @param token 令牌
     * @param page  页码
     * @param size  每页病人数
     * @param name  病人姓名
     * @param phone 手机号码
     * @return 病人清单
     */
    DdxzResponse patientList(String token, Integer page, Integer size, String name, String phone);

    /**
     * 分页检索病人治疗信息
     *
     * @param token     令牌
     * @param patientId 病人标识
     * @param beginDate 检索起始日期
     * @param endDate   检索结束日期
     * @param type      检索类型
     * @param page      页码
     * @param size      每页治疗条数
     * @return 治疗清单
     */
    DdxzResponse cureList(String token, String patientId, String beginDate, String endDate, Integer type, Integer page, Integer size);

    /**
     * 登陆系统
     *
     * @param loginInfo 登陆信息
     * @return 令牌
     */
    DdxzResponse login(LoginInfo loginInfo);

    /**
     * 更新令牌信息
     *
     * @param token 旧令牌
     * @return 新令牌
     */
    DdxzResponse pong(String token);

    /**
     * 移除病人信息
     *
     * @param token     令牌
     * @param patientId 病人标识
     * @return 是否移除成功
     */
    DdxzResponse removePatient(String token, String patientId);

    /**
     * 移除治疗信息
     *
     * @param token 令牌
     * @param curId 质量标识
     * @return 是否移除成功
     */
    DdxzResponse removeCure(String token, String curId);

    /**
     * 导入病人信息
     *
     * @param token 令牌
     * @param file  保存有病人信息的Excel文件
     * @return 是否导入成功
     */
    DdxzResponse importPatient(String token, MultipartFile file);

    /**
     * 导入住院信息
     *
     * @param token 令牌
     * @param file  保存有病人住院信息的Excel文件
     * @return 是否导入成功
     */
    DdxzResponse importConsult(String token, MultipartFile file);

    /**
     * 导入随访信息
     *
     * @param token 令牌
     * @param file  保存有病人随访信息的Excel文件
     * @return 是否导入成功
     */
    DdxzResponse importCourse(String token, MultipartFile file);

    /**
     * 导入住院信息
     * @param file 文件信息
     * @return 是否导入成功
     */
    DdxzResponse importConsult(ConsultFile file);
}
